
fastcall.out：     文件格式 elf64-x86-64


Disassembly of section .text:

00000000000010a0 <_start>:
_start():
    10a0:	f3 0f 1e fa          	endbr64 
    10a4:	31 ed                	xor    ebp,ebp
    10a6:	49 89 d1             	mov    r9,rdx
    10a9:	5e                   	pop    rsi
    10aa:	48 89 e2             	mov    rdx,rsp
    10ad:	48 83 e4 f0          	and    rsp,0xfffffffffffffff0
    10b1:	50                   	push   rax
    10b2:	54                   	push   rsp
    10b3:	4c 8d 05 16 02 00 00 	lea    r8,[rip+0x216]        # 12d0 <__libc_csu_fini>
    10ba:	48 8d 0d 9f 01 00 00 	lea    rcx,[rip+0x19f]        # 1260 <__libc_csu_init>
    10c1:	48 8d 3d fc 00 00 00 	lea    rdi,[rip+0xfc]        # 11c4 <main>
    10c8:	ff 15 12 2f 00 00    	call   QWORD PTR [rip+0x2f12]        # 3fe0 <__libc_start_main@GLIBC_2.2.5>
    10ce:	f4                   	hlt    
    10cf:	90                   	nop

00000000000010d0 <deregister_tm_clones>:
deregister_tm_clones():
    10d0:	48 8d 3d 39 2f 00 00 	lea    rdi,[rip+0x2f39]        # 4010 <__TMC_END__>
    10d7:	48 8d 05 32 2f 00 00 	lea    rax,[rip+0x2f32]        # 4010 <__TMC_END__>
    10de:	48 39 f8             	cmp    rax,rdi
    10e1:	74 15                	je     10f8 <deregister_tm_clones+0x28>
    10e3:	48 8b 05 ee 2e 00 00 	mov    rax,QWORD PTR [rip+0x2eee]        # 3fd8 <_ITM_deregisterTMCloneTable>
    10ea:	48 85 c0             	test   rax,rax
    10ed:	74 09                	je     10f8 <deregister_tm_clones+0x28>
    10ef:	ff e0                	jmp    rax
    10f1:	0f 1f 80 00 00 00 00 	nop    DWORD PTR [rax+0x0]
    10f8:	c3                   	ret    
    10f9:	0f 1f 80 00 00 00 00 	nop    DWORD PTR [rax+0x0]

0000000000001100 <register_tm_clones>:
register_tm_clones():
    1100:	48 8d 3d 09 2f 00 00 	lea    rdi,[rip+0x2f09]        # 4010 <__TMC_END__>
    1107:	48 8d 35 02 2f 00 00 	lea    rsi,[rip+0x2f02]        # 4010 <__TMC_END__>
    110e:	48 29 fe             	sub    rsi,rdi
    1111:	48 89 f0             	mov    rax,rsi
    1114:	48 c1 ee 3f          	shr    rsi,0x3f
    1118:	48 c1 f8 03          	sar    rax,0x3
    111c:	48 01 c6             	add    rsi,rax
    111f:	48 d1 fe             	sar    rsi,1
    1122:	74 14                	je     1138 <register_tm_clones+0x38>
    1124:	48 8b 05 c5 2e 00 00 	mov    rax,QWORD PTR [rip+0x2ec5]        # 3ff0 <_ITM_registerTMCloneTable>
    112b:	48 85 c0             	test   rax,rax
    112e:	74 08                	je     1138 <register_tm_clones+0x38>
    1130:	ff e0                	jmp    rax
    1132:	66 0f 1f 44 00 00    	nop    WORD PTR [rax+rax*1+0x0]
    1138:	c3                   	ret    
    1139:	0f 1f 80 00 00 00 00 	nop    DWORD PTR [rax+0x0]

0000000000001140 <__do_global_dtors_aux>:
__do_global_dtors_aux():
    1140:	f3 0f 1e fa          	endbr64 
    1144:	80 3d c5 2e 00 00 00 	cmp    BYTE PTR [rip+0x2ec5],0x0        # 4010 <__TMC_END__>
    114b:	75 2b                	jne    1178 <__do_global_dtors_aux+0x38>
    114d:	55                   	push   rbp
    114e:	48 83 3d 7a 2e 00 00 	cmp    QWORD PTR [rip+0x2e7a],0x0        # 3fd0 <__cxa_finalize@GLIBC_2.2.5>
    1155:	00 
    1156:	48 89 e5             	mov    rbp,rsp
    1159:	74 0c                	je     1167 <__do_global_dtors_aux+0x27>
    115b:	48 8b 3d a6 2e 00 00 	mov    rdi,QWORD PTR [rip+0x2ea6]        # 4008 <__dso_handle>
    1162:	e8 f9 fe ff ff       	call   1060 <__cxa_finalize@plt>
    1167:	e8 64 ff ff ff       	call   10d0 <deregister_tm_clones>
    116c:	c6 05 9d 2e 00 00 01 	mov    BYTE PTR [rip+0x2e9d],0x1        # 4010 <__TMC_END__>
    1173:	5d                   	pop    rbp
    1174:	c3                   	ret    
    1175:	0f 1f 00             	nop    DWORD PTR [rax]
    1178:	c3                   	ret    
    1179:	0f 1f 80 00 00 00 00 	nop    DWORD PTR [rax+0x0]

0000000000001180 <frame_dummy>:
frame_dummy():
    1180:	f3 0f 1e fa          	endbr64 
    1184:	e9 77 ff ff ff       	jmp    1100 <register_tm_clones>

0000000000001189 <_Z3addii>:
_Z3addii():
/home/weilaidb/work/git/asmeg/fastcall/main.cpp:18
//     return v1 + v2;
// }


int add(int a, int b)
{
    1189:	f3 0f 1e fa          	endbr64 
    118d:	55                   	push   rbp
    118e:	48 89 e5             	mov    rbp,rsp
    1191:	48 83 ec 10          	sub    rsp,0x10
    1195:	89 7d fc             	mov    DWORD PTR [rbp-0x4],edi
    1198:	89 75 f8             	mov    DWORD PTR [rbp-0x8],esi
/home/weilaidb/work/git/asmeg/fastcall/main.cpp:19
    printf("add: %d + %d = %d\n", a, b, a + b);
    119b:	8b 55 fc             	mov    edx,DWORD PTR [rbp-0x4]
    119e:	8b 45 f8             	mov    eax,DWORD PTR [rbp-0x8]
    11a1:	8d 0c 02             	lea    ecx,[rdx+rax*1]
    11a4:	8b 55 f8             	mov    edx,DWORD PTR [rbp-0x8]
    11a7:	8b 45 fc             	mov    eax,DWORD PTR [rbp-0x4]
    11aa:	89 c6                	mov    esi,eax
    11ac:	48 8d 3d 52 0e 00 00 	lea    rdi,[rip+0xe52]        # 2005 <_ZStL19piecewise_construct+0x1>
    11b3:	b8 00 00 00 00       	mov    eax,0x0
    11b8:	e8 b3 fe ff ff       	call   1070 <printf@plt>
/home/weilaidb/work/git/asmeg/fastcall/main.cpp:20
    return 0;
    11bd:	b8 00 00 00 00       	mov    eax,0x0
/home/weilaidb/work/git/asmeg/fastcall/main.cpp:21
}
    11c2:	c9                   	leave  
    11c3:	c3                   	ret    

00000000000011c4 <main>:
main():
/home/weilaidb/work/git/asmeg/fastcall/main.cpp:31
 * @param argc
 * @param argv
 * @return int
 */
int main(int argc, char **argv)
{
    11c4:	f3 0f 1e fa          	endbr64 
    11c8:	55                   	push   rbp
    11c9:	48 89 e5             	mov    rbp,rsp
    11cc:	89 7d ec             	mov    DWORD PTR [rbp-0x14],edi
    11cf:	48 89 75 e0          	mov    QWORD PTR [rbp-0x20],rsi
/home/weilaidb/work/git/asmeg/fastcall/main.cpp:32
    int a = 10;
    11d3:	c7 45 fc 0a 00 00 00 	mov    DWORD PTR [rbp-0x4],0xa
/home/weilaidb/work/git/asmeg/fastcall/main.cpp:33
    asm volatile("call %%rax;"::"a"(add),"c" (add));
    11da:	48 8d 05 a8 ff ff ff 	lea    rax,[rip+0xffffffffffffffa8]        # 1189 <_Z3addii>
    11e1:	48 89 c2             	mov    rdx,rax
    11e4:	48 8d 05 9e ff ff ff 	lea    rax,[rip+0xffffffffffffff9e]        # 1189 <_Z3addii>
    11eb:	48 89 c1             	mov    rcx,rax
    11ee:	48 89 d0             	mov    rax,rdx
    11f1:	ff d0                	call   rax
/home/weilaidb/work/git/asmeg/fastcall/main.cpp:44



    // __asm__ volatile

    return 0;
    11f3:	b8 00 00 00 00       	mov    eax,0x0
/home/weilaidb/work/git/asmeg/fastcall/main.cpp:45
}
    11f8:	5d                   	pop    rbp
    11f9:	c3                   	ret    

00000000000011fa <_Z41__static_initialization_and_destruction_0ii>:
_Z41__static_initialization_and_destruction_0ii():
/home/weilaidb/work/git/asmeg/fastcall/main.cpp:45
    11fa:	f3 0f 1e fa          	endbr64 
    11fe:	55                   	push   rbp
    11ff:	48 89 e5             	mov    rbp,rsp
    1202:	48 83 ec 10          	sub    rsp,0x10
    1206:	89 7d fc             	mov    DWORD PTR [rbp-0x4],edi
    1209:	89 75 f8             	mov    DWORD PTR [rbp-0x8],esi
    120c:	83 7d fc 01          	cmp    DWORD PTR [rbp-0x4],0x1
    1210:	75 32                	jne    1244 <_Z41__static_initialization_and_destruction_0ii+0x4a>
/home/weilaidb/work/git/asmeg/fastcall/main.cpp:45 (discriminator 1)
    1212:	81 7d f8 ff ff 00 00 	cmp    DWORD PTR [rbp-0x8],0xffff
    1219:	75 29                	jne    1244 <_Z41__static_initialization_and_destruction_0ii+0x4a>
/usr/include/c++/9/iostream:74
  extern wostream wclog;	/// Linked to standard error (buffered)
#endif
  ///@}

  // For construction of filebuffers for cout, cin, cerr, clog et. al.
  static ios_base::Init __ioinit;
    121b:	48 8d 3d ef 2d 00 00 	lea    rdi,[rip+0x2def]        # 4011 <_ZStL8__ioinit>
    1222:	e8 69 fe ff ff       	call   1090 <_ZNSt8ios_base4InitC1Ev@plt>
    1227:	48 8d 15 da 2d 00 00 	lea    rdx,[rip+0x2dda]        # 4008 <__dso_handle>
    122e:	48 8d 35 dc 2d 00 00 	lea    rsi,[rip+0x2ddc]        # 4011 <_ZStL8__ioinit>
    1235:	48 8b 05 bc 2d 00 00 	mov    rax,QWORD PTR [rip+0x2dbc]        # 3ff8 <_ZNSt8ios_base4InitD1Ev@GLIBCXX_3.4>
    123c:	48 89 c7             	mov    rdi,rax
    123f:	e8 3c fe ff ff       	call   1080 <__cxa_atexit@plt>
/home/weilaidb/work/git/asmeg/fastcall/main.cpp:45
    1244:	90                   	nop
    1245:	c9                   	leave  
    1246:	c3                   	ret    

0000000000001247 <_GLOBAL__sub_I_main.cpp>:
_GLOBAL__sub_I_main.cpp():
/home/weilaidb/work/git/asmeg/fastcall/main.cpp:45
    1247:	f3 0f 1e fa          	endbr64 
    124b:	55                   	push   rbp
    124c:	48 89 e5             	mov    rbp,rsp
    124f:	be ff ff 00 00       	mov    esi,0xffff
    1254:	bf 01 00 00 00       	mov    edi,0x1
    1259:	e8 9c ff ff ff       	call   11fa <_Z41__static_initialization_and_destruction_0ii>
    125e:	5d                   	pop    rbp
    125f:	c3                   	ret    

0000000000001260 <__libc_csu_init>:
__libc_csu_init():
    1260:	f3 0f 1e fa          	endbr64 
    1264:	41 57                	push   r15
    1266:	4c 8d 3d 1b 2b 00 00 	lea    r15,[rip+0x2b1b]        # 3d88 <__frame_dummy_init_array_entry>
    126d:	41 56                	push   r14
    126f:	49 89 d6             	mov    r14,rdx
    1272:	41 55                	push   r13
    1274:	49 89 f5             	mov    r13,rsi
    1277:	41 54                	push   r12
    1279:	41 89 fc             	mov    r12d,edi
    127c:	55                   	push   rbp
    127d:	48 8d 2d 14 2b 00 00 	lea    rbp,[rip+0x2b14]        # 3d98 <__do_global_dtors_aux_fini_array_entry>
    1284:	53                   	push   rbx
    1285:	4c 29 fd             	sub    rbp,r15
    1288:	48 83 ec 08          	sub    rsp,0x8
    128c:	e8 6f fd ff ff       	call   1000 <_init>
    1291:	48 c1 fd 03          	sar    rbp,0x3
    1295:	74 1f                	je     12b6 <__libc_csu_init+0x56>
    1297:	31 db                	xor    ebx,ebx
    1299:	0f 1f 80 00 00 00 00 	nop    DWORD PTR [rax+0x0]
    12a0:	4c 89 f2             	mov    rdx,r14
    12a3:	4c 89 ee             	mov    rsi,r13
    12a6:	44 89 e7             	mov    edi,r12d
    12a9:	41 ff 14 df          	call   QWORD PTR [r15+rbx*8]
    12ad:	48 83 c3 01          	add    rbx,0x1
    12b1:	48 39 dd             	cmp    rbp,rbx
    12b4:	75 ea                	jne    12a0 <__libc_csu_init+0x40>
    12b6:	48 83 c4 08          	add    rsp,0x8
    12ba:	5b                   	pop    rbx
    12bb:	5d                   	pop    rbp
    12bc:	41 5c                	pop    r12
    12be:	41 5d                	pop    r13
    12c0:	41 5e                	pop    r14
    12c2:	41 5f                	pop    r15
    12c4:	c3                   	ret    
    12c5:	66 66 2e 0f 1f 84 00 	data16 nop WORD PTR cs:[rax+rax*1+0x0]
    12cc:	00 00 00 00 

00000000000012d0 <__libc_csu_fini>:
__libc_csu_fini():
    12d0:	f3 0f 1e fa          	endbr64 
    12d4:	c3                   	ret    
